Transaction Isolation Levels হল ডেটাবেস ট্রানজেকশনের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা নির্ধারণ করে একাধিক ট্রানজেকশনের মধ্যে ডেটা কতটা বিচ্ছিন্ন বা একে অপরের প্রভাব থেকে সুরক্ষিত থাকবে। যখন একাধিক ট্রানজেকশন একসাথে ডেটাবেসে কাজ করে, তখন বিভিন্ন ধরণের Dirty Reads, Non-repeatable Reads, এবং Phantom Reads ঘটতে পারে, যা Transaction Isolation Levels দ্বারা নিয়ন্ত্রিত হয়।
DB2 সহ অনেক ডেটাবেস সিস্টেমে মোট চারটি প্রধান Transaction Isolation Levels রয়েছে, যা ট্রানজেকশনের আচরণ এবং সিস্টেম পারফরম্যান্সের মধ্যে একটি ট্রেড-অফ তৈরি করে।
Read Uncommitted হলো সবচেয়ে কম স্ট্রিক্ট আইসলেশন লেভেল, যেখানে এক ট্রানজেকশন অন্য ট্রানজেকশনের কমিট না হওয়া ডেটা পড়তে পারে। এটি Dirty Reads এর অনুমতি দেয়, অর্থাৎ আপনি যে ডেটা পড়ছেন তা অন্য ট্রানজেকশনে পরিবর্তিত হতে পারে এবং সেই পরিবর্তনটি নিশ্চিত না হওয়া পর্যন্ত আপনার কাছে ভুল ডেটা থাকতে পারে।
Read Committed আইসলেশন লেভেলটি DB2 এর ডিফল্ট আইসলেশন লেভেল। এটি Dirty Read প্রতিরোধ করে, তবে Non-repeatable Reads (একই ট্রানজেকশনে একাধিক বার একই ডেটা পড়লে, প্রথম পড়ার সময় ডেটা অন্য ট্রানজেকশনের দ্বারা পরিবর্তিত হতে পারে) ঘটতে পারে।
Repeatable Read আইসলেশন লেভেলটি Dirty Reads এবং Non-repeatable Reads উভয়কেই নিষিদ্ধ করে। এর মানে হলো, একবার যখন একটি ট্রানজেকশন কোনও ডেটা পড়ে, তখন পরবর্তী কোনও ট্রানজেকশন সেই ডেটা পরিবর্তন করতে পারবে না যতক্ষণ না প্রথম ট্রানজেকশনটি সম্পন্ন হয়। তবে, Phantom Reads এখনও ঘটতে পারে, অর্থাৎ কোনও নতুন রেকর্ড ইনসার্ট হতে পারে যা আপনার পড়া ডেটার সাথে মিলে না।
Serializable হলো সর্বোচ্চ আইসলেশন লেভেল, যেখানে সমস্ত ডেটা সম্পূর্ণভাবে বিচ্ছিন্ন এবং সুরক্ষিত থাকে। এতে সমস্ত ট্রানজেকশন একে অপর থেকে পুরোপুরি বিচ্ছিন্ন থাকে এবং Dirty Reads, Non-repeatable Reads, এবং Phantom Reads সমস্তই প্রতিরোধিত হয়। এই আইসলেশন লেভেল সর্বোচ্চ সুরক্ষা প্রদান করে তবে পারফরম্যান্সে কিছুটা কম হতে পারে, কারণ এটি ট্রানজেকশনের মধ্যে উচ্চ স্তরের ব্লকিং এবং লকিং তৈরি করে।
Isolation Level | Dirty Reads | Non-repeatable Reads | Phantom Reads | Performance Impact |
---|---|---|---|---|
Read Uncommitted | Allowed | Allowed | Allowed | Fastest |
Read Committed | Not Allowed | Allowed | Allowed | Moderate |
Repeatable Read | Not Allowed | Not Allowed | Allowed | Slower |
Serializable | Not Allowed | Not Allowed | Not Allowed | Slowest |
DB2-এ Transaction Isolation Levels ডেটাবেসের ট্রানজেকশনের মধ্যে একে অপরের প্রভাবকে কতটা বিচ্ছিন্ন রাখা হবে তা নির্ধারণ করে। এটি পারফরম্যান্স এবং নির্ভরযোগ্যতার মধ্যে একটি ট্রেড-অফ তৈরি করে। আপনি যে পর্যায়ের আইসলেশন ব্যবহার করবেন তা নির্ভর করে আপনার ট্রানজেকশন এবং ডেটাবেস অ্যাপ্লিকেশনের নির্দিষ্ট প্রয়োজনের উপর। Serializable সর্বোচ্চ সুরক্ষা প্রদান করে, তবে পারফরম্যান্সে কিছুটা খরচ হতে পারে, আর Read Uncommitted পারফরম্যান্সের জন্য দ্রুত হলেও এটি কম সুরক্ষা প্রদান করে।
common.read_more